[IA64] Stop collision chain search after match is found
authorAlex Williamson <alex.williamson@hp.com>
Fri, 7 Mar 2008 19:26:27 +0000 (12:26 -0700)
committerAlex Williamson <alex.williamson@hp.com>
Fri, 7 Mar 2008 19:26:27 +0000 (12:26 -0700)
No need to continue to search collision chain after one is found
since guest TLB can't have any overlap.

Signed-off-by: Dong Yaozu <eddie.dong@intel.com>
Signed-off-by: Zhang Xiantao <xiantao.zhang@intel.com>
xen/arch/ia64/vmx/vtlb.c

index 8926bd3186ef150ee2e6a48a4886439b1fe6bc76..f956b6889888b8579596cc33f27e687830e792bb 100644 (file)
@@ -324,8 +324,10 @@ static void vtlb_purge(VCPU *v, u64 va, u64 ps)
         while (num) {
             cur = vtlb_thash(hcb->pta, curadr, vrr.rrval, &tag);
             while (cur) {
-                if (cur->etag == tag && cur->ps == rr_ps)
+                if (cur->etag == tag && cur->ps == rr_ps) {
                     cur->etag = 1UL << 63;
+                    break;
+                }
                 cur = cur->next;
             }
             curadr += size;
@@ -353,8 +355,10 @@ static void vhpt_purge(VCPU *v, u64 va, u64 ps)
         cur = (thash_data_t *)ia64_thash(start);
         tag = ia64_ttag(start);
         while (cur) {
-            if (cur->etag == tag)
+            if (cur->etag == tag) {
                 cur->etag = 1UL << 63; 
+                break;
+            }
             cur = cur->next;
         }
         start += size;